<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // js中用于存储待执行的回调函数的队列包括两个不同的队列：宏队列和微队列
        // 宏队列中的宏任务：dom事件回调，ajax回调，定时器回调
        // 微队列中的微任务：promise回调函数，mutation函数

        // 1.先执行微队列中的任务，再执行宏队列中的任务
        // 2.每次取出一个宏任务执行之前，会先将微任务中任务取出来执行。

        //执行顺序
      /*1.同步
        2.process.nextTick
        3.微任务(promise.then,async/await)
        4.宏任务(计时器,ajax,读取文件,DOM事件)
        5.setImmediate */


        setTimeout(() => {
            console.log('定时器1');
            Promise.resolve("promise3").then(value => {
                console.log(value);
            })
        })
        setTimeout(() => {
            console.log("定时器2");
        })
        Promise.resolve("promise1").then(value => {
            console.log(value);
        })
        Promise.resolve("promise2").then(value => {
            console.log(value);
        })
    </script>
</body>

</html>